/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ControleAcademico.Model.Dao;

import ControleAcademico.Model.Pojo.Aluno;
import java.io.*;
import java.util.*;

/**
 *
 * @author arthur
 * @author renan
 * @author tais
 * @author vinicius
 */
public class AlunoDaoImp implements AlunoDao{
    
    // Atributos
    private ArrayList<Aluno> listaAlunos;

    
    // Metodos
    public AlunoDaoImp() {
        this.listaAlunos = new ArrayList<Aluno>();
    }
    
    public ArrayList<Aluno> getListaAlunos() {
        return listaAlunos;
    }
    

    @Override
    public void adicionar (Aluno aluno) throws IOException {
            
            if(!(this.listaAlunos.contains(aluno))) {
                this.listaAlunos.add(aluno);
                return;
            }
            else {
                throw new IOException();
            }        
        
    }
    
        
    @Override
    public void remover (int  id) {
        
        Aluno aluno = null;
        for (Aluno a : listaAlunos) {
            if(a.getId() - id == 0) {
                aluno = a;
            }
        }
        
        try {
            this.listaAlunos.remove(aluno);
        } catch (Exception e){
            System.out.println("ID não consta na lista.");
        }
        
    }
   
    public ArrayList<Aluno> obterLista() {
        
        ArrayList<Aluno> copiaLista = new ArrayList<Aluno>();
        
        int index = 0;
        for(Aluno a: this.listaAlunos){
            copiaLista.add(this.listaAlunos.get(index));
            index++;
        }
        return copiaLista;
    }
    
    
    @Override
    public Aluno buscar (int id) throws IOException {
        
        int index = 0;
        boolean encontrou = false;
        for(Aluno d : listaAlunos) {
            if(d.getId() - id == 0) {
                encontrou = true;
                break;
            }
            index++;
        }
        if (encontrou == true) {
            return listaAlunos.get(index);
        } else {
            throw new IOException();
        }
    }
    
}
